/*
 * Albareth - an action roleplaying game.
 * Copyright (C) 2008 Jens Anuth
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 *   02110-1301, USA.
 * 
 * $Id: CastingBar.java 46 2008-05-15 18:09:39Z jens464 $
*/
package albareth.frontend.slick.ui;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.SlickException;

import albareth.core.action.Action;
import albareth.core.entity.PlayerCharacter;
import albareth.frontend.slick.SlickResources;

public class CastingBar extends UIElement
{
    private PlayerCharacter _owner;
    private Action _activeAction = null;
    private Image _imgEmpty = SlickResources.CASTING_BAR_EMPTY; 
    private Image _imgFull = SlickResources.CASTING_BAR_FULL;
    
    public CastingBar(int x, int y, PlayerCharacter owner)
    {
        super(x, y);
        setSize(_imgEmpty.getWidth(), _imgEmpty.getHeight());
        _owner = owner;
        setVisible(false);
        setFont(SlickResources.SMALL_FONT);
        
    }

    public void render(Graphics g, GameContainer container, int screenX, int screenY)
            throws SlickException
    {
        float pctFilled =
            (float)_activeAction.getCastingDelayElapsed() / _activeAction.getCastingDelay();
        UIToolkit.drawBar(
                screenX, screenY, _imgFull, _imgEmpty, pctFilled
        );
        
        g.drawString(
                _activeAction.getName(),
                screenX + UIToolkit.getCenterStringX(
                        _activeAction.getName(), getWidth(), SlickResources.SMALL_FONT),
                screenY + 4
        );
        
    }

    protected boolean update(int delta, GameContainer container) throws SlickException
    {
        _activeAction = _owner.getActiveAction();
        setVisible(_activeAction != null);
        return false;
    }
    
    


}
